package exam.niuke;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 数字进制转换
 *
 * 写出一个程序，接受一个十六进制的数，输出该数值的十进制表示。
 * 数据范围：保证结果在 int 的范围内
 */
public class ExamHJ5Two {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String number = in.next();
            int res = getDecimal8(number.substring(2));
            System.out.println(res);
        }
    }

    private final static int BASE16 = 16;

    private static final Map<Character, Integer> map16 = new HashMap<Character, Integer>() {{
        put('0', 0);
        put('1', 1);
        put('2', 2);
        put('3', 3);
        put('4', 4);
        put('5', 5);
        put('6', 6);
        put('7', 7);
        put('8', 8);
        put('9', 9);
        put('A', 10);
        put('B', 11);
        put('C', 12);
        put('D', 13);
        put('E', 14);
        put('F', 15);
    }};

    /**
     * 体现了进制的本质，n进制=每一位乘以进制数+最后一位
     *
     * @param number 真正的进制数（字符串）
     * @return
     */
    public static int getDecimal16(String number) {
        char[] chars = number.toUpperCase().toCharArray();
        int res = 0;
        for (char ch : chars) {
            res = res * BASE16 + map16.get(ch);
        }
        return res;
    }

    private final static int BASE8 = 8;
    private static final Map<Character, Integer> map8 = new HashMap<Character, Integer>() {{
        put('0', 0);
        put('1', 1);
        put('2', 2);
        put('3', 3);
        put('4', 4);
        put('5', 5);
        put('6', 6);
        put('7', 7);
    }};


    /**
     * 体现了进制的本质，n进制=每一位乘以进制数+最后一位
     *
     * @param number 真正的进制数（字符串）
     * @return
     */
    public static int getDecimal8(String number) {
        char[] chars = number.toUpperCase().toCharArray();
        int res = 0;
        for (char ch : chars) {
            res = res * BASE8 + map8.get(ch);
        }
        return res;
    }

}
